package com.efuture.chaptersix

import java.io.File
import java.nio.charset.Charset

/* @Description: Kotlin语言在超类上定义扩展函数
 * @Auther: zhaoshanshan
 * @Date: 2022/03/08/7:06 下午
 */
//超类上定义扩展函数 该函数任何类可以进行调用
fun Any.mySelf()= println("当前的内容是$this")
fun Any.mySelf2(str:String):Any{//可以进行链式调用
    println(str)
    return this
}
//系统扩展函数重写
fun File.readLines(charset: Charset = Charsets.UTF_8): List<String> {
    println("我将覆盖系统扩展函数方法")
    val result = ArrayList<String>()
    forEachLine(charset) { result.add(it); }
    return result
};
data class Demo107(val name:String,val age:Int) {}
data class Demo107Test(val name:String,val age:Int) {}




fun main() {

    //调用超类的扩展函数
    Demo107("赵山山",30).mySelf()
    Demo107Test("刘一凡",36).mySelf()
    123.mySelf()
    "123".mySelf()
    true.mySelf()
    123.4.mySelf()
    //链式调用
    "123".mySelf2("test").mySelf2("t12").mySelf2("Demo107Test")//进行链式调用
    //覆盖系统扩展函数写法
    val file = File("src/main/test.txt")
    println(file.readLines())


}